<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
   
  <meta name="keywords" content="不矜，不伐，不自是" />
   
  <meta name="description" content="无名之辈" />
  
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <title>
     晓康的博客
  </title>
  <meta name="generator" content="hexo-theme-yilia-plus">
  
  <link rel="shortcut icon" href="/favicon.ico" />
  
  
<link rel="stylesheet" href="./css/style.css">

  
<script src="/js/pace.min.js"></script>


  

  

<link rel="alternate" href="/atom.xml" title="晓康的博客" type="application/atom+xml">
</head>

</html>

<body>
  <div id="app">
    <main class="content">
      
<section class="cover">
    
  <div class="cover-frame">
    <div class="bg-box">
      <img src="/images/cover4.jpg" alt="image frame" />
    </div>
    <div class="cover-inner text-center text-white">
      <h1><a href="/">晓康的博客</a></h1>
      <div id="subtitle-box">
        
        <span id="subtitle"></span>
        
      </div>
      <div>
        
      </div>
    </div>
  </div>
  <div class="cover-learn-more">
    <a href="javascript:void(0)" class="anchor"><i class="ri-arrow-down-line"></i></a>
  </div>
</section>



<script src="https://cdn.jsdelivr.net/npm/typed.js@2.0.11/lib/typed.min.js"></script>

<div id="main">
  <section class="outer">
  <article class="articles">
    
    
    
    
    <article id="post-示波器的基本理论" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck75ub0nz0001zwrh1bfugkfv/"
    >示波器的基本理论</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck75ub0nz0001zwrh1bfugkfv/" class="article-date">
  <time datetime="2020-02-27T15:18:57.000Z" itemprop="datePublished">2020-02-27</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h2 id="示波器的设计架构"><a href="#示波器的设计架构" class="headerlink" title="示波器的设计架构"></a>示波器的设计架构</h2><h2 id="示波器的探头讲究"><a href="#示波器的探头讲究" class="headerlink" title="示波器的探头讲究"></a>示波器的探头讲究</h2><h2 id="示波器应用知识点"><a href="#示波器应用知识点" class="headerlink" title="示波器应用知识点"></a>示波器应用知识点</h2><p>首先是：</p>
<p>存储深度 = 采样率 * 采样时间</p>
<p>很多时候，都是因为示波器内存太小，来不及实时存储数据（更别说显示了），所以必须要降低采样速度（可能物理采样不变只是间隔读出数据）来获得足够长的的采样时间（对时基的调整）。</p>
<p>务必掌握好当前设置下系统的采样率，这对波形细节很重要，对触发捕获率更重要。</p>
<p>带宽参数主要体现在对波形幅值的准确还原，100MHZ示波器也能测到300HZ的信号频率，只是其幅值衰减到1/10一下了（这是一个例子）。</p>
<p>采样频率更多影响到了实际波形的质量。</p>
<h2 id="案例-普源DS1102E"><a href="#案例-普源DS1102E" class="headerlink" title="案例-普源DS1102E"></a>案例-普源DS1102E</h2><p>时基MENU中可以看到当前的实际采样率。</p>
<p>也可以通过设置DISPLY中显示“点”波形，调到极限小时基，自己数点数。</p>
<p>何时示波器处于最大采样率1G/s？</p>
<p>只有在单通道，普通存储深度（16K），时基在最小刻度的几个档位，才能达到最大采样率，此时，采样时间是固定的2ms，因为此时16K内存只能存这么久，要想看更久的时间，必须降低采样率。</p>
<p>不过不合理的是，普源这款，当普通存储改为长存储时，采样率降一半，这个只是单纯为了增加时间轴长度，却明明白白降低了波形分辨率。主动给用户做了选择，不爽。</p>
<p>可知，存储深度大了，更容易提前看到异常波形，好比用网抓鱼与用漏勺抓鱼的区别。</p>

      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E7%A4%BA%E6%B3%A2%E5%99%A8/" rel="tag">示波器</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-普源MSO5072示波器破解" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck75vbtw20000agrhfrd9cb4x/"
    >普源MSO5072示波器破解</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck75vbtw20000agrhfrd9cb4x/" class="article-date">
  <time datetime="2020-02-26T11:16:16.000Z" itemprop="datePublished">2020-02-26</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><p>EEVBlog关于Rigol MSO5000系列破解专栏，目前破解方法来源于此：</p>
<p> <a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401</a> </p>
<h2 id="EEVBlog该型示波器介绍"><a href="#EEVBlog该型示波器介绍" class="headerlink" title="EEVBlog该型示波器介绍"></a>EEVBlog该型示波器介绍</h2><p>EEVBlog介绍视频：</p>
<p>bili</p>
<h2 id="01-01-04-08-版-破解教程"><a href="#01-01-04-08-版-破解教程" class="headerlink" title="01.01.04.08 版-破解教程"></a>01.01.04.08 版-破解教程</h2><p>开始破解之前：</p>
<p>确认固件版本是否为01.01.04.08，不是就需要升级到此版本。</p>
<p>升级步骤：</p>
<p>升级前，先备份：</p>
<p> <a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2769676/#msg2769676" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2769676/#msg2769676</a> </p>
<p>然后使用升级GEL文件升级。</p>
<p>务必开机确认新的版本号是01.01.04.08，在此基础上执行以下操作</p>
<p>由于gitlab明显被Q，优先选择普源苏州官网下载：</p>
<p> <a href="https://supportcn.rigol.com/Support/SoftDownload/3" target="_blank" rel="noopener">https://supportcn.rigol.com/Support/SoftDownload/3</a> </p>
<p>这个网站看起来没有好好维护，不过有最新固件：</p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582879877396.png" alt="1582879877396"></p>
<p>相反： <a href="https://www.rigol.com/" target="_blank" rel="noopener">https://www.rigol.com/</a> 上却还是01.01.04.04固件（2020.02.26），已下载下来比对二进制确认。</p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2833308/#msg2833308" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2833308/#msg2833308</a></p>
<p>具体内容如下：</p>
<p>I just received a brand new 5072 today and come with the fw ver 01.01.04.08.</p>
<p>目前最新版本是01.01.04.08，5072可以完美破解</p>
<p>Those three files from skander36 are perfectly work.</p>
<p>破解文件来自skander36 ，证实有效</p>
<p>I encountered a problem while using 16GB USB Drive. But it solved after replace with the 32GB USB Drive. It is highly recommend that you have prepared two or more different brand and size USB Drive before perform the upgrade. My failure one is Sandisk 16GB and workable one is Sandisk 32GB (Tiny one).</p>
<p>一开始使用闪迪16G失败，换成闪迪32G成功</p>
<p>Case :<br>When you found that the USB Drive is empty except the GEL file after the backup process:<br>  - Attach the USB drive back to the scope, press Storage/Disk<br>  - If you found there are two or more USB Disk, it means that you may need to try another USB Drive.</p>
<p>Enclosed with all the files from skander36 and backup GEL file from TV84.</p>
<p>skander36 提供了破解文件， TV84提供了备份用的GEL文件</p>
<p>注意：</p>
<p>如果在备份操作之后，U盘中除了原先放入的GEL之外没有其他生成，即备份失败。U盘重新插入示波器，界面中进入存储-&gt;磁盘，发现两个分区，表示此U盘不可用</p>
<p>My workflow are :<br>(Please read carefully especially handle the same name GEL files).</p>
<p>详细步骤如下，注意要正确处理同名的GEl文件，他们的作用是不一样的</p>
<p>\1. Format the USB Drive (FAT32 Format);</p>
<p>第一步： 格式化U盘为FAT32格式</p>
<p>\2. Copy the DS5000Update.GEL.backup.doc to the USB Drive;</p>
<p>\3. Rename it by delete the “backup.doc” extension;</p>
<p>第二步： DS5000Update.GEL.backup.doc拷入U盘并重命名为DS5000Update.GEL</p>
<p>\4. Attach the USB Drive to scope;<br>\5. Press Utility/System/Help/Local upgrade;<br>\6. After finished the screen will have message told you to reboot the scope;</p>
<p>\7. Turn off the scope;</p>
<p>第三步： U盘插入示波器，界面中找到固件升级选项（Utility/System/Help/Local upgrade），实施本地升级，按照指示操作，这个过程中在备份示波器数据，完了关机。</p>
<p>\8. Attach the USB drive back to your Mac / PC;<br>\9. Copy all the file except the GEL files and folder back to your Mac / PC for your backup;</p>
<p>第四步： 保存刚才备份的数据到电脑中，以防不测</p>
<p>\10. Format the USB Drive (FAT32 Format);<br>\11. Copy another three files to the USB Drive, rename them by remove the “.doc” extension;</p>
<p>第五步： 再次将U盘格式化为FAT32，此时将除了backup的三个文件全部放入U盘根目录，并且重命名文件，去掉”.doc”</p>
<p>\12. Attach the USB Drive back to the Scope, turn it on;<br>\14. Wait for the screen shows that USB Drive was attached.<br>\15. Press Utility/System/Help/Local upgrade</p>
<p>第六步： 按照之前方法，U盘插入示波器，在界面中选择本地升级</p>
<p>\16. The screen will turn to white background and follow the instruction to press any keys.<br>\17. After the upgrade process is finished, the scope will reboot.<br>\18. Done! Enjoy!</p>
<p>最后： 按照屏幕指示，等待示波器重启，查看选件是否全开</p>
<p>Please correct me if any mistake or typo. Thanks!</p>
<p>相关文件如下：</p>
<p><strong>Thank you so much for all of you to contribute here!</strong></p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/?action=dlattach;attach=891248" target="_blank" rel="noopener">![*] appEntry_01_01_04_08.bpatch.doc</a> (0.21 kB)<br><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/?action=dlattach;attach=891250" target="_blank" rel="noopener">![*] DS5000Update.GEL.doc</a> (130 kB)<br><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/?action=dlattach;attach=891252" target="_blank" rel="noopener">![*] patch.txt</a> (0.17 kB)<br><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/?action=dlattach;attach=891254" target="_blank" rel="noopener">![*] DS5000Update.GEL.backup.doc</a> (2 kB)</p>
<p>其他注意事项：</p>
<p>如果重启后不能进入系统，可以回退固件版本，见本文<code>降级固件</code></p>
<h2 id="使用SSH自助破解的教程"><a href="#使用SSH自助破解的教程" class="headerlink" title="使用SSH自助破解的教程"></a>使用SSH自助破解的教程</h2><p>详细步骤（ 01.01.04.08 固件）：</p>
<p>&lt;发表于2019.11.11日&gt;</p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2682411/#msg2682411" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2682411/#msg2682411</a></p>
<p> This is just a play-by-play of what I did – I struggled my way through it so there are ways to run things more efficiently or better that I wasn’t aware of at the time.</p>
<p>Step 1: Get your Linux workstation functional, either by installing directly or running it within VirtualBox. I’m using a Windows PC so I’m running everything through VirtualBox, which just adds a couple intermediate steps.</p>
<p>Step 2: Get organized – I made 3 folders, “<strong>Upgrade</strong>”, “<strong>Enable SSH</strong>”, and “<strong>Patch</strong>”.<br>-  In the <strong>Upgrade</strong> folder, download the 01.01.04.08 GEL from GitLab and rename it DS5000Update.GEL (<a href="https://gitlab.com/riglol/rigolee/blob/MSO5000/GEL/DS5000Update_01.01.04.08.GEL" target="_blank" rel="noopener">https://gitlab.com/riglol/rigolee/blob/MSO5000/GEL/DS5000Update_01.01.04.08.GEL</a>)<br>-  In the <strong>Enable SSH</strong> folder, add the GEL file from this post and rename it DS5000Update.GEL (<a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2234076/#msg2234076" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2234076/#msg2234076</a>)<br>-  In the <strong>Patch</strong> folder, download the Bpatch folder from this post and remove the .txt extension (<a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2620701/#msg2620701" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2620701/#msg2620701</a>)</p>
<p>Step 3: Upgrade the MSO5000 using the DS5000Update.GEL file from the Upgrade Folder. Put the file onto the root directory of the USB drive and then go to the <em>Utility / System / Help / Local Upgade</em> menu once you’ve put the USB into the MSO5000 and upgrade to 01.01.04.08. Restart the Oscilloscope</p>
<p>Step 4: Now time for the heavy lifting. Put the USB drive back into the computer and remove the update file you just used from the USB stick. Now go to the <strong>Enable SSH</strong> folder and put that DS5000Update.GEL file onto the USB drive. Put the USB stick into the MSO5000 and run the Local Upgrade again. <em>Oh no, it failed!</em> Except it didn’t, as @mabl stated in his post, it will look like it failed but it works. <strong><em>DO NOT RESTART THE OSCILLOSCOPE</em></strong>, otherwise you will have to run step 4 again. Also, leave the USB stick in the MSO5000 for the next steps.</p>
<p>执行假升级，获取SSH登录，“升级失败后”不能关闭示波器</p>
<p>Step 5: If it’s not already connected, connect your MSO5000 to your LAN or use a crossover cable if you have one to hook it to your computer. If all you have is “normal” LAN cables, you’ll need to use your router and can’t hook directly to your PC. Now go to the <em>Utility/ IO / LAN</em> menu and write down the IP address of your MSO5000.</p>
<p>获取IP以便登录ssh</p>
<p>Step 6: If it’s not already in your distro, go to the software manager and download Putty so that you can SSH (Secure Shell) across the network into your MSO5000. Once it’s downloaded, you’re going to follow some of the instructions from @TopLoser that @TrickTronic posted. First, run PuTTY and put the IP address into the IP window, use <strong>Port 22</strong>, and select SSH for your connection type. Then, use “<strong>root</strong>” as the username and “<strong>Rigol201</strong>” as the pwd. You’re now connected to the Oscilloscope.</p>
<p><code>登录名：root，密码：Rigol201</code>，到这里你已经成功黑进示波器的Linux系统了</p>
<p>Step 7: In the SSH, type (without quotes) “<strong>cp /rigol/appEntry /media/sda1/</strong>”. Once it’s finished writing it to the USB stick (although it’s probably not the “best” answer, just pull the USB stick out and put it back into your computer. Copy the bspatch file into the root of the USB stick as well. Right click and open a terminal window starting in the USB stick and type “<strong>bspatch appEntry appEntryPatched appEntry_01_01_04_08.bpatch</strong>” into the terminal. It will create you a new file called appEntryPatched. Rename the original file to appEntryUnpatched or something similar and then rename the patched file to appEntry. Now remove the USB stick and put it back into the Oscilloscope.</p>
<p>手动备份sda1文件夹到U盘，并手动执行U盘中的补丁程序</p>
<p>Step 8: I hope you kept your SSH open, if not then open it back up. Type “<strong>cd /media/sda1</strong>”. <em>If the command fails, replace sda1 with sdb1</em>. My MSO5000 mounted the USB drive into this second location when I put it back in. Type “<strong>ls</strong>” (LS in lower case if the font here sucks) to see the files in the directory. You should see your files. Now run “<strong>chmod +x appEntry</strong>” to allow the appEntry file to be an executable, otherwise it will not work. To make this next step easier, move back to the root directory using “<strong>cd /</strong>”. You can type “<strong>pwd</strong>” at any time in SSH or Terminal to see the directory you’re currently in at any time. Now copy the file back to the oscilloscope, “<strong>cp /media/sda1/appEntry /rigol/</strong>” and you should be good to go.</p>
<p>Step 9: Restart your Oscilloscope and don’t forget to thank the dozens of people on this forum who made this possible. </p>
<p>appEntry 增加可执行权限，并将可执行文件拷贝到指定位置</p>
<p> <strong>cp空格/media/sda1/appEntry空格/rigol/</strong> ：将U盘下的appEntry空格拷贝到根目录下的rigol文件夹下。</p>
<h3 id="MD5SUM确认-非必须"><a href="#MD5SUM确认-非必须" class="headerlink" title="MD5SUM确认(非必须)"></a>MD5SUM确认(非必须)</h3><p>在打补丁之后，确认MD5SUM，参考：</p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2920244/#msg2920244" target="_blank" rel="noopener">Re: Hacking the Rigol MSO5000 series oscilloscopes</a></p>
<p>« <strong>Reply #1542 on:</strong> February 15, 2020, 12:49:48 pm »</p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2920138/#msg2920138" target="_blank" rel="noopener">Quote from: Gandalf_Sr on February 15, 2020, 11:19:12 am</a></p>
<blockquote>
<p>Can someone please do us new purchasers a favor and make a summary comment on the latest state of play with regards to hacking? I am ready to buy an MSO5074 but looking through the thread I’m confused as to the latest recommended best practice approach.</p>
<p>Thanks ![:D]</p>
<p>[EDIT] Is post #933 still the latest to follow?<br><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401</a></p>
</blockquote>
<p> No, that’s for firmware version 01.01.04.04 and the current version is 01.01.04.08.</p>
<p>Start reading forward from this post <a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2682411/#msg2682411" target="_blank" rel="noopener"> Reply #1293</a> which contains the most recent reasonable summary of the manual version of the update.</p>
<p>Please note that if you’re Unix/Linux competent you can make this manual process much easier to do by using ‘scp’ rather than shuffling appEntry back and forwards on a USB stick - basically get ssh access and then run the update entirely using ssh/scp.</p>
<p>I would suggest augmenting that procedure by checking the md5sum of both the pre and post patched appEntry to make sure that you’ve got it right. For reference: </p>
<table>
<thead>
<tr>
<th>md5sum of appEntry <strong>before</strong> patching</th>
<th><code>afe3e7c2d38bdebb66d3f1f11d910743</code></th>
</tr>
</thead>
<tbody><tr>
<td>md5sum of appEntry <strong>after</strong> patching</td>
<td><code>3f95cb3236b47826e303de960596f966</code></td>
</tr>
</tbody></table>
<p>If you read later on you’ll find mabi has posted a script to automate applying the same patch automatically from a USB stick. If using mabi’s method be sure to save the<em>patch.txt</em>file with Unix line endings, not DOS/Windows ones.</p>
<p>如何查看MD5SUM值请自行百度。</p>
<h3 id="如何降级固件？"><a href="#如何降级固件？" class="headerlink" title="如何降级固件？"></a>如何降级固件？</h3><p>打开电源之后，立即按住” Single “键，或者是连续按多次，可进入一个有两个选项的黑色界面</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">Re: Hacking the Rigol MSO5000 series oscilloscopes</span><br><span class="line">« Reply #1419 on: November 15, 2019, 08:59:45 am »</span><br><span class="line">Hi Sumect ,</span><br><span class="line">Try to downgrade firmware using version from Rigol site .</span><br><span class="line">For that you need to press &quot;Single&quot; key from oscilloscope keyboard after pressing power button . You will see a black screen with a menu with two entry that gives you the posibility to install firmware .</span><br><span class="line">Please let us now if you succeed .</span><br></pre></td></tr></table></figure>

<h3 id="破解成功图示"><a href="#破解成功图示" class="headerlink" title="破解成功图示"></a>破解成功图示</h3><p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/web-modified.png" alt="web-modified"></p>
<p>![Screenshot at 2019-03-07 15-30-01](普源MSO5072示波器破解/Screenshot at 2019-03-07 15-30-01.png)<img src="/2020/ck75vbtw20000agrhfrd9cb4x/patch.png" alt="patch"></p>
<h2 id="01-01-04-04-版-破解教程"><a href="#01-01-04-04-版-破解教程" class="headerlink" title="01.01.04.04 版-破解教程"></a>01.01.04.04 版-破解教程</h2><p>内容很多，从这一条开始看：</p>
<p><a href="https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401" target="_blank" rel="noopener">https://www.eevblog.com/forum/testgear/hacking-the-rigol-mso5000-series-oscilloscopes/msg2251401/#msg2251401</a></p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582716141933.png" alt="1582716141933"></p>
<p>查看机器固件版本，版本低则升级固件到 01.01.04.04 ，当前破解只针对此版本。官网下载地址：</p>
<p> <a href="https://www.rigol.com//supports" target="_blank" rel="noopener">https://www.rigol.com//supports</a> </p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582716633692.png" alt="1582716633692"></p>
<p>升级固件：</p>
<p>将固件命名为“ DS5000Update.GEL ”放入U盘，有足够剩余空间。进入升级界面，点击升级（ Utility-&gt;System-&gt;Help Local upgrade ）。</p>
<p>确认版本号：</p>
<p>进入系统，确认版本号为01.01.04.04。</p>
<p>打补丁</p>
<p>下载破解补丁：</p>
<p>DS5000Update_patch_01_01_04_04_usb.GEL</p>
<p>下载地址：</p>
<p>XXX</p>
<p>重命名为“ DS5000Update.GEL ”放入U盘，点击升级，消耗较长时间（5min），按屏幕指示操作，最后重启，期间如有错误可以忽略或者重启。总之，打补丁固定需要消耗约5min。</p>
<p>重启后验证是否选件全开。</p>
<p>如有必要，可以执行机器自校准。好使约35min，且必须要预热至少半小时再自校准。</p>
<p>注1：如果想要获取SSH权限，就是上图中：</p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582717575066.png" alt="1582717575066"></p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582717604554.png" alt="1582717604554"></p>
<p>下载一个二进制文件，与升级同样操作，但是不是更新也不是打补丁，提示会“更新失败”，但是此时变获取了SSH登录权限，用户名root，密码root，就可以连接网线，登录linux了。</p>
<p>下载地址：</p>
<p>XXX</p>
<p>注2：</p>
<p>U盘最好使用干净的空U盘，并且从电脑上正常卸载，U盘使用FAT32格式化。</p>
<p>注3：</p>
<p>此种破解不一定是永久有效的，很可能下次固件升级就不能使用了。目前（2020.02.26）只有官方的许可证才是永久有效。</p>
<h2 id="更老版本破解"><a href="#更老版本破解" class="headerlink" title="更老版本破解"></a>更老版本破解</h2><p>root登录SSH，进入系统更改start.sh，加入一行即可……，不清楚也不讨论</p>
<h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><p>老外设计的配套逻辑分析探头，LV探头</p>
<p> <a href="https://gitlab.com/dren.dk/mso5k-la-pod" target="_blank" rel="noopener">https://gitlab.com/dren.dk/mso5k-la-pod</a> </p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/Snipaste_2020-02-26_22-39-58.png" alt="Snipaste_2020-02-26_22-39-58"></p>
<p>粗略算了下，物料成本700-800人民币，其中AVR芯片需要烧录程序，源文件很全，程序也给出来了，PCB使用是KICAD画得。</p>
<p>老版本硬件：</p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582867303966.png" alt="1582867303966"></p>
<p>新版硬件版本更新，软件变为08</p>
<p>新版可能是HW 01.01.000 FW 00.01.01.04.08 依然可以破解成功。</p>
<p>以上，全部是基于EEVBlog中内容整理，仅仅是部分内容，如有需要亦或疑问请阅读原文。</p>
<p>破解所需文件打包：</p>
<p><img src="/2020/ck75vbtw20000agrhfrd9cb4x/1582881553634.png" alt="1582881553634"></p>
<p>下载地址：</p>
<p>链接：<a href="https://pan.baidu.com/s/10ZE0m0f2Zgsb0biubhTfog" target="_blank" rel="noopener">https://pan.baidu.com/s/10ZE0m0f2Zgsb0biubhTfog</a><br>提取码：k73j</p>

      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E7%A4%BA%E6%B3%A2%E5%99%A8%E7%A0%B4%E8%A7%A3/" rel="tag">示波器破解</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-各类二极管的特性和选型" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck75ub0ne0000zwrh3gct0a5v/"
    >各类二极管的特性和选型</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck75ub0ne0000zwrh3gct0a5v/" class="article-date">
  <time datetime="2020-02-25T15:44:45.000Z" itemprop="datePublished">2020-02-25</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h3 id="快恢复二极管和肖特基二极管的区别"><a href="#快恢复二极管和肖特基二极管的区别" class="headerlink" title="快恢复二极管和肖特基二极管的区别"></a>快恢复二极管和肖特基二极管的区别</h3><p>快恢复一般反向大电压，反向恢复时间比普通二极管短的多</p>
<p>肖特基的劣势是反向电压，优势是压降低和，极其低的反向回复时间，比快恢复小的多</p>
<h3 id="常用型号"><a href="#常用型号" class="headerlink" title="常用型号"></a>常用型号</h3>
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E4%BA%8C%E6%9E%81%E7%AE%A1/" rel="tag">二极管</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-回归嵌入式软件-RTOS的深入" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck71tzomh00000wrhbu2k6aoy/"
    >回归嵌入式软件-RTOS的深入</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck71tzomh00000wrhbu2k6aoy/" class="article-date">
  <time datetime="2020-02-25T11:23:19.000Z" itemprop="datePublished">2020-02-25</time>
</a>
      
      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <p>占位</p>

      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      

    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-SKD步进驱动器分析" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck71n141g0000l0rhfkid6urh/"
    >SKD步进驱动器分析</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck71n141g0000l0rhfkid6urh/" class="article-date">
  <time datetime="2020-02-25T07:01:39.000Z" itemprop="datePublished">2020-02-25</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h2 id="电路整体"><a href="#电路整体" class="headerlink" title="电路整体"></a>电路整体</h2><p><img src="/2020/ck71n141g0000l0rhfkid6urh/1582626778339.png" alt="1582626778339"></p>
      
      <a class="article-more-link" href="/2020/ck71n141g0000l0rhfkid6urh/">阅读更多...</a>
      
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E6%AD%A5%E8%BF%9B%E9%A9%B1%E5%8A%A8/" rel="tag">步进驱动</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-继电器控制电机-辐射干扰问题" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck705wbif00025srh40ltc6y2/"
    >继电器控制电机-辐射干扰问题</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck705wbif00025srh40ltc6y2/" class="article-date">
  <time datetime="2020-02-22T13:51:37.000Z" itemprop="datePublished">2020-02-22</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h2 id="Multisim仿真"><a href="#Multisim仿真" class="headerlink" title="Multisim仿真"></a>Multisim仿真</h2><p><img src="/2020/ck705wbif00025srh40ltc6y2/1582379640328.png" alt="1582379640328"></p>
      
      <a class="article-more-link" href="/2020/ck705wbif00025srh40ltc6y2/">阅读更多...</a>
      
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/EMI%E5%B9%B2%E6%89%B0/" rel="tag">EMI干扰</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="n-KiCad基本使用" class="article article-type-n" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck705wbhx00005srh3yzdh3cz/"
    >KiCad基本使用</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck705wbhx00005srh3yzdh3cz/" class="article-date">
  <time datetime="2020-02-21T13:45:50.000Z" itemprop="datePublished">2020-02-21</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <p>在熟悉AD条件下，学习使用KiCad。</p>

      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/layout/" rel="tag">layout</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-VeriLog学习笔记-2020-02-19" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck705wbi300015srh1v1a9ewt/"
    >VeriLog学习笔记-2020-02-19</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck705wbi300015srh1v1a9ewt/" class="article-date">
  <time datetime="2020-02-19T13:47:12.000Z" itemprop="datePublished">2020-02-19</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <h2 id="复习之前的内容"><a href="#复习之前的内容" class="headerlink" title="复习之前的内容"></a>复习之前的内容</h2><p>黑金A301开发板，流水灯。学习这一例程是为了熟悉开发板、调试器、quertus、Modelsim、程序下载的基本知识。</p>
<p>usb blaster驱动安装，程序下载的两种方式，Flash下载需要的转换步骤。</p>
<p>点灯的两种电路：译码器 和 循环移位</p>
<p>程序如何仿真，testbench文件基本写法，仿真波形图的查看</p>
<p>verilog最基本的语法，assign、always、begin end、parameter使用，变量声明，程序结构，行为级的描述方式。</p>
<p>以及如何用门级器件描述电路</p>
<p>最后分析quartus的RTL结果、Map后结果，初步了解程序编译的过程和结果</p>
      
      <a class="article-more-link" href="/2020/ck705wbi300015srh1v1a9ewt/">阅读更多...</a>
      
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/FPGA/" rel="tag">FPGA</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-《电气工程101》读书笔记" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck6r6m2cz000ll0rh8eb16sxx/"
    >《电气工程101》读书笔记</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck6r6m2cz000ll0rh8eb16sxx/" class="article-date">
  <time datetime="2020-02-17T06:43:52.000Z" itemprop="datePublished">2020-02-17</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E9%98%85%E8%AF%BB/">阅读</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <p><img src="/2020/ck6r6m2cz000ll0rh8eb16sxx/1581930378981.png" alt="1581930378981"></p>
      
      <a class="article-more-link" href="/2020/ck6r6m2cz000ll0rh8eb16sxx/">阅读更多...</a>
      
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E6%8A%80%E6%9C%AF/" rel="tag">技术</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
    <article id="post-USB转串口（485-422-TTL-UART-232）设计-补充" class="article article-type-post" itemscope
  itemprop="blogPost" data-scroll-reveal>

  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2020/ck6r6m2c30004l0rhein12dbg/"
    >USB转串口（485/422/TTL-UART/232）设计-补充</a
  >
</h2>
  

    </header>
    

    
    <div class="article-meta">
      <a href="/2020/ck6r6m2c30004l0rhein12dbg/" class="article-date">
  <time datetime="2020-02-16T09:54:38.000Z" itemprop="datePublished">2020-02-16</time>
</a>
      
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%A1%AC%E4%BB%B6/">硬件</a>
  </div>

      
      
      
    </div>
    

    

    
    <div class="article-entry" itemprop="articleBody">
      


      

      
      <p>早先博客中发布了关于USB转串口的探讨性文章，USB转422这个小物件最后做出来了却一直没有整理总结，特在此写一篇纯干货的方案介绍文档，也是为了方便自己查阅吧。</p>
<p>原博客链接：<a href="https://blog.csdn.net/hxkrrzq/article/details/95981139" target="_blank" rel="noopener">最好的自己in</a></p>
<p>一直没有整理也是因为AD18挂掉一次，导致原理图所有器件标号消失了，最近重新审视那个电路，发现一些新的问题，在此一并探讨。</p>
<h2 id="1-硬件结构"><a href="#1-硬件结构" class="headerlink" title="1. 硬件结构"></a>1. 硬件结构</h2><p><img src="/2020/ck6r6m2c30004l0rhein12dbg/1581851521371.png" alt="1581851521371"></p>
      
      <a class="article-more-link" href="/2020/ck6r6m2c30004l0rhein12dbg/">阅读更多...</a>
      
      
      <!-- reward -->
      
    </div>
    
    
      <!-- copyright -->
      
    <footer class="article-footer">
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/USB2Uart/" rel="tag">USB2Uart</a></li></ul>


    </footer>

  </div>

  

  
  
  

  

</article>
    
  </article>
  

  
  <nav class="page-nav">
    
    <span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/">下一页</a>
  </nav>
  
</section>
</div>

      <footer class="footer">
  <div class="outer">
    <ul class="list-inline">
      <li>
        &copy;
        2019-2020
        an_kang
      </li>
      <li>
        
          Powered by
        
        
        <a href="https://hexo.io" target="_blank">Hexo</a> Theme <a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>
        
      </li>
    </ul>
    <ul class="list-inline">
      <li>
        
        
        <span>
  <i>PV:<span id="busuanzi_value_page_pv"></span></i>
  <i>UV:<span id="busuanzi_value_site_uv"></span></i>
</span>
        
      </li>
      <li>
        <!-- cnzz统计 -->
        
      </li>
    </ul>
  </div>
</footer>
    <div class="to_top">
        <div class="totop" id="totop">
  <i class="ri-arrow-up-line"></i>
</div>
      </div>
    </main>
      <aside class="sidebar">
        <button class="navbar-toggle"></button>
<nav class="navbar">
  
  <div class="logo">
    <a href="/"><img src="/images/ayer-side.svg" alt="晓康的博客"></a>
  </div>
  
  <ul class="nav nav-main">
    
    <li class="nav-item">
      <a class="nav-item-link" href="/">主页</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/archives">归档</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/categories">分类</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags">标签</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/2020/about">关于我</a>
    </li>
    
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      
      <a class="nav-item-link nav-item-search"  title="Search">
        <i class="ri-search-line"></i>
      </a>
      
      
      <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
        <i class="ri-rss-line"></i>
      </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
      </aside>
      <div id="mask"></div>

<!-- #reward -->
<div id="reward">
  <span class="close"><i class="ri-close-line"></i></span>
  <p class="reward-p"><i class="ri-cup-line"></i>吓着了吧，哈~</p>
  <div class="reward-box">
    
    <div class="reward-item">
      <img class="reward-img" src="/images/alipay.jpg">
      <span class="reward-type">支付宝</span>
    </div>
    
    
    <div class="reward-item">
      <img class="reward-img" src="/images/wechat.jpg">
      <span class="reward-type">微信</span>
    </div>
    
  </div>
</div>
      
<script src="/js/jquery-2.0.3.min.js"></script>


<script src="/js/jquery.justifiedGallery.min.js"></script>


<script src="/js/lazyload.min.js"></script>


<script src="/js/busuanzi-2.3.pure.min.js"></script>


<script src="/js/share.js"></script>




<script>
  try {
    var typed = new Typed("#subtitle", {
    strings: ['学而不思则罔，思而不学则殆','',''],
    startDelay: 300,
    typeSpeed: 200,
    loop: true,
    backSpeed: 100,
    showCursor: true
    });
  } catch (err) {
  }
  
</script>




<script>
  var ayerConfig = {
    mathjax: false
  }
</script>


<script src="/js/ayer.js"></script>


<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">


<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>

    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">

        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <!--  Controls are self-explanatory. Order can be changed. -->

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.css">
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"></script>

<script>
    function viewer_init() {
        let pswpElement = document.querySelectorAll('.pswp')[0];
        let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))

        $imgArr.forEach(($em, i) => {
            $em.onclick = () => {
                // slider展开状态
                // todo: 这样不好，后面改成状态
                if (document.querySelector('.left-col.show')) return
                let items = []
                $imgArr.forEach(($em2, i2) => {
                    let img = $em2.getAttribute('data-idx', i2)
                    let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
                    let title = $em2.getAttribute('alt')
                    // 获得原图尺寸
                    const image = new Image()
                    image.src = src
                    items.push({
                        src: src,
                        w: image.width || $em2.width,
                        h: image.height || $em2.height,
                        title: title
                    })
                })
                var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
                    index: parseInt(i)
                });
                gallery.init()
            }
        })
    }
    viewer_init()
</script>




<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>
  </div>
</body>

</html>